package cn.tedu.csmall.product.mapper;

import cn.tedu.csmall.product.pojo.dto.CategoryDTO;
import cn.tedu.csmall.product.pojo.vo.AttributeListItemVO;
import cn.tedu.csmall.product.pojo.vo.AttributeStandardVO;
import cn.tedu.csmall.product.pojo.vo.CategoryListItemVO;
import cn.tedu.csmall.product.pojo.vo.CategoryStandardVO;

import java.util.List;

/**
 * @author 程旭东
 */
public interface CategoryMapper {
    /**
     * 向属性模板中插入数据
     * @param categoryStandardVO 传入属性模板对象
     * @return
     */
    int insert(CategoryStandardVO categoryStandardVO);

    /**
     * 根据Id删除属性模板的数据
     * @param id 传入需要删除的数据的Id
     * @return
     */
    int deleteById(Long id);

    /**
     * 返回属性模板总数
     * @return
     */
    int count();


    /**
     * 返回Id查询的数据
     * @param id
     * @return
     */
    CategoryStandardVO selectById(Long id);

    /**
     * 从属性模板中查找所有数据
     * @return
     */
    List<CategoryStandardVO> list();

    /**
     * 向属性模板数据库中批量插入数据
     * @param categoryListItemVOS
     * @return
     */
    int insertBatch(List<CategoryListItemVO> categoryListItemVOS);

    /**
     * 封装了Id和需要更新的新数据
     * @param categoryListItemVOS
     * @return
     */
    int updateById(CategoryListItemVO categoryListItemVOS);

    /**
     * 根据Id批量删除数据
     * @param id
     * @return
     */
    int deleteBatchIds(Long... id);

    /**
     * 根据类别名称查找数据
     * @param name
     * @return
     */
    CategoryStandardVO selectByName(String name);

    void insertNew(CategoryDTO categoryDTO);

    List<CategoryListItemVO> listByParentId(Long id);
}
